var express = require('express');
var router = express.Router();
const pro = require("../sql/pro");
const sql = require("../sql/sql");
const uuid = require("uuid");
const xlsx = require("node-xlsx")
const path = require('path');


// 页面路由
router.get('/', function(req, res, next) {
  // 读取数据库数据
  sql.get(pro).then(data=>{
    // 处理数据
    // console.log(data)
    // 将数据作为变量，传给页面模板
    // 由页面模板完成数据渲染
    res.render('goods', {
      index: 1,
      data,
      power: req.session.power
    });
  })
});

router.get('/add', function(req, res, next) {
  res.render('goodsAdd', {
    index: 1,
    power: req.session.power
  });
});

// 添加数据的功能路由
router.post('/addAction', function(req, res, next) {
  // 接收数据
  const data = req.body;
  // 处理数据
  data.proId = "proId-" + uuid.v1();
  data.price -= 0;
  data.stock *= 1;
  data.sales /= 1;
  data.discount = Number(data.discount);
  data.tip /= 1;
  data.hot = data.hot ? true : false;

  // console.log(data);
  // 将数据存入数据库
  sql.add(pro, data).then(()=>{
    // 跳转到数据渲染页面路由(路由重定向)
    res.redirect("/goods");
  })
});

router.get('/update', function(req, res, next) {
  const id = req.query.id;

  sql.get(pro, {proId: id}).then(data=>{
    res.render('goodsUpdate', {
      index: 1,
      data: data[0],
      power: req.session.power
    });
  })
})

// 修改数据的功能路由
router.post('/updateAction', function(req, res, next) {
  // 接收数据
  const data = req.body;
  // 处理数据
  data.proId = data.id;
  data.price -= 0;
  data.stock *= 1;
  data.sales /= 1;
  data.discount = Number(data.discount);
  data.tip /= 1;
  data.hot = data.hot ? true : false;
  delete data.id;
  
  // 根据id，修改指定数据
  sql.set(pro, {proId: data.proId}, data).then(()=>{
    // 跳转到数据渲染页面路由(路由重定向)
    res.redirect("/goods");
  })
});


// 搜索数据的功能路由
router.get('/search', function(req, res, next) {
  // 接收数据
  const data = req.query.search;
  if(data === ""){
    res.redirect("/goods");
  }else{
    const reg = new RegExp(data);
    // 根据指定数据模糊查询数据库
    sql.get(pro, {$or:[{name:reg},{message:reg},{kind:reg}]}, data).then((data)=>{
      res.render("goods",{
        index: 1,
        data,
        power: req.session.power
      })
    })
  }
});

// 排序的功能路由
router.get('/sort', function(req, res, next) {
  // 接收数据
  const data = req.query;
    // 根据指定数据模糊查询数据库
  sql.getSort(pro, {}, data).then((data)=>{
    res.render("goods",{
      index: 1,
      data,
      power: req.session.power
    })
  })
});

// 根据excel文件，导入商品数据的功能路由
router.get('/upload', function(req, res, next) {
  // node-xlsx
  const xlsxPath = path.join(__dirname, "..", "public", "upload", "pro.xlsx");
  // 读文件，解析成数据
  const data = xlsx.parse(xlsxPath);
  // 处理数据
  const arr = [];
  for(let i=1;i<data[0].data.length;i++){
    arr.push({
      proId:"prId-" + uuid.v1(),
      name:data[0].data[i][1],
      kind:data[0].data[i][2],
      brand:data[0].data[i][3],
      logo:data[0].data[i][4],
      img:data[0].data[i][5],
      price:data[0].data[i][6],
      message:data[0].data[i][7],
      stock:data[0].data[i][8],
      sales:data[0].data[i][9],
      discount:data[0].data[i][10],
      tip:data[0].data[i][11],
      hot: Math.random() > 0.5 ? true : false
    })
  }
  // 存储到数据库
  sql.add(pro, arr).then(()=>{
    // 路由重定向会gooods
    res.redirect("/goods");
  })
});

module.exports = router;
